import globals from "globals";
import js from "@eslint/js";
import pluginJs from "@eslint/js"; // JavaScript 规则
import pluginTypeScript from "@typescript-eslint/eslint-plugin"; // TypeScript 规则
import parserTypeScript from "@typescript-eslint/parser"; // TypeScript 解析器
import configPrettier from "eslint-config-prettier"; // 禁用与 Prettier 冲突的规则
import pluginPrettier from "eslint-plugin-prettier"; // 运行 Prettier 规则
// import reactPlugin from "eslint-plugin-react";
import simpleImportSortPlugin from "eslint-plugin-simple-import-sort";
import importPlugin from "eslint-plugin-import";
/** @type {import('eslint').Linter.Config[]} */
export default [
  // 通用 JavaScript 配置
  {
    ...js.configs.recommended,
    ignores: ["**/.*", "dist/*", "*.d.ts", "public/*", "src/assets/**"],
    languageOptions: {
      globals: {
        ...globals.browser, // 浏览器变量 (window, document 等)
        ...globals.node, // Node.js 变量 (process, require 等)
      },
    },
    plugins: {
      prettier: pluginPrettier,
    },
    rules: {
      ...configPrettier.rules,
      ...pluginPrettier.configs.recommended.rules,
      "no-debug": "off", // 禁止 debugger
      "prettier/prettier": [
        "error",
        {
          endOfLine: "auto", // 自动识别换行符
        },
      ],
    },
  },

  // TypeScript 配置
  {
    files: ["**/*.{ts,tsx}"],
    ignores: ["**/*.d.ts"], // 排除d.ts文件
    languageOptions: {
      parser: parserTypeScript,
      parserOptions: {
        sourceType: "module",
        ecmaFeatures: {
          jsx: true, // 支持JSX
        },
      },
    },
    plugins: {
      "@typescript-eslint": pluginTypeScript,
      // react: reactPlugin,
      "simple-import-sort": simpleImportSortPlugin,
      import: importPlugin,
    },
    rules: {
      ...pluginTypeScript.configs.strict.rules, // TypeScript 严格规则
      "@typescript-eslint/no-explicit-any": "off", // 允许使用 any
      "@typescript-eslint/no-empty-function": "off", // 允许空函数
      "@typescript-eslint/no-empty-object-type": "off", // 允许空对象类型
      "@typescript-eslint/no-non-null-assertion": "off", // 允许使用非空断言
      "simple-import-sort/imports": [
        "error",
        {
          groups: [
            ["^react$", "^react-router-dom$", "^@?\\w"],
            ["^(@|components)(/.*|$)"],
            ["^\\.\\.(?!/?$)", "^\\.\\./?$"],
            ["^\\./(?=.*/)(?!/?$)", "^\\.(?!/?$)", "^\\./?$"],
            ["^.+\\.?(css)$"],
            ["^\\u0000"],
          ],
        },
      ],
      "simple-import-sort/exports": "error",
      "import/no-duplicates": "error", // 禁止重复的导入声明，即不允许同一个模块被多次导入。
      "import/first": "error", // 强制所有的导入语句必须位于其他类型语句之前，比如变量声明、函数定义等
      "import/newline-after-import": "error", // 要求在所有导入语句之后添加一个空行，以此来分隔导入和其他代码部分。
    },
  },
];
